/**
 * 高阶函数  =》 一个函数返回一个函数， 一个函数可以接受一个函数
 */
function core() { // 核心代码
    console.log('core', ...arguments)
}

// 给core方法增加一些额外的逻辑 但是不能更改核心代码

Function.prototype.before = function (cb) {
    // this等于 谁调用before方法，this就指向谁，这里的this指向core
    return (...args) => {
        cb();
        this(...args);
    }
}

let newFn = core.before(() => {
    console.log('before');
})

newFn()
newFn(1,2)